Re: View definition and schema search path bug or expected behaviour? - Mailing list pgsql-general

From Chris Bartlett
Subject Re: View definition and schema search path bug or expected behaviour?
Date
Msg-id p06240808cc3663cd7475@[192.168.200.4]
Whole thread Raw
In response to Re: View definition and schema search path bug or expected behaviour?  (Adrian Klaver <adrian.klaver@gmail.com>)
Responses Re: View definition and schema search path bug or expected behaviour?  (Adrian Klaver <adrian.klaver@gmail.com>)
List pgsql-general
At 7:51 PM -0700 25/7/12, Adrian Klaver wrote:
>On 07/25/2012 07:47 PM, Chris Bartlett wrote:
>>At 7:37 PM -0700 25/7/12, Adrian Klaver wrote:
>>>I am guessing if you do  show search_path; from psql you will see that
>>>the public schema is before the bob schema. The SELECT for the
>>>unqualified people table in CREATE VIEW bob.people_view will find
>>>public.people first in that case.
>>
>>I don't think that's it:
>>
>>show search_path
>>-> "$user",public
>>
>>select SESSION_USER
>>-> bob
>>
>>  From the docs:
>>"The value for search_path must be a comma-separated list of schema
>>names. If one of the list items is the special value $user, then the
>>schema having the name returned by SESSION_USER is substituted, if there
>>is such a schema. (If not, $user is ignored.)"
>
>I see your point, but see below.
>
>http://www.postgresql.org/docs/9.2/static/runtime-config-client.html
>"
>If one of the list items is the special name $user, then the schema
>having the name returned by SESSION_USER is substituted, if there is
>such a schema and the user has USAGE permission for it. (If not,
>$user is ignored.)"
>
>In this version there is the qualifier that the user must have USAGE
>privileges on the schema. Is that the case?
>
>\dn+ should confirm.

Ah! The bob schema has no access privileges set. I had used pgAdmin3
- the schema definition pgAdmin3 reports is:
CREATE SCHEMA bob   AUTHORIZATION bob;
(i.e., no grants)

So:
GRANT ALL ON SCHEMA bob TO bob;
DROP VIEW bob.people;
CREATE OR REPLACE VIEW bob.people_view AS SELECT people.name FROM people;

SELECT * FROM bob.people_view
-> returns records from bob.people as expected

I had created the bob schema using pgAdmin3 (connected as bob), but
when the schema owner is set to bob, there is no option in pgAdmin's
New Schema... setup to grant privileges on the schema to bob. I guess
I assumed that if bob owned the schema he would have all privileges
on that schema.

Thanks for pointing me in the right direction.

pgsql-general by date:

Previous
From: Adrian Klaver
Date:
Subject: Re: View definition and schema search path bug or expected behaviour?
Next
From: Gavin Flower
Date:
Subject: Re: Smaller data types use same disk space